import json

def contains(expected, actual):
    # 如果 actual 是字符串，首先将其解析成字典
    if isinstance(actual, str):
        actual = actual.strip()
        if actual:  # 只有非空字符串才进行解析
            try:
                actual = json.loads(actual)
            except json.JSONDecodeError:
                # 如果解析失败，直接作为字符串处理
                pass

    # 如果 expected 是字符串，首先将其解析为字典
    if isinstance(expected, str):
        expected = expected.strip()
        if expected:  # 只有非空字符串才进行解析
            try:
                expected = json.loads(expected)
            except json.JSONDecodeError:
                # 如果解析失败，直接作为字符串处理
                pass

    # 如果 expected 是字典，则递归检查
    if isinstance(expected, dict):
        if not isinstance(actual, dict):  # 如果 actual 不是字典，直接返回 False
            return False
        for key, value in expected.items():
            # 如果 expected 中的字段不在 actual 中，返回 False
            if key not in actual:
                return False
            # 递归调用，检查值是否匹配
            if not contains(value, actual[key]):
                return False

    # 如果 expected 是列表，则检查是否每个元素都在 actual 列表中
    elif isinstance(expected, list):
        if not isinstance(actual, list):  # 如果 actual 不是列表，直接返回 False
            return False
        for item in expected:
            if not any(contains(item, act_item) for act_item in actual):
                return False

    # 对于其他情况，直接比较值
    else:
        return expected == actual

    return True
